package com.cw.jeeyt.dao.intf.security;

import java.util.List;

import com.cw.jeeyt.dao.model.security.SecurityUserRoleDo;
import com.cw.lang.mybatis.dto.PageInfo;

/**
 * 用户角色 dao数据库操作接口
 *
 * @author chenw
 * @version 1.0.0
 */
public interface SecurityUserRoleDao {

    /**
     * 删除用户角色
     *
     * @param userRole
     */
    void delete(SecurityUserRoleDo userRole);

    /**
     * 修改用户角色
     *
     * @param userRole
     */
    void update(SecurityUserRoleDo userRole);

    /**
     * 根据主键查询用户角色
     *
     * @param id 主键id
     * @return 用户角色
     */
    SecurityUserRoleDo getById(String id);

    /**
     * 新增用户角色
     *
     * @param userRole
     * @return 整数
     */
    Integer insert(SecurityUserRoleDo userRole);

    /**
     * 查询所有用户角色
     *
     * @return 用户角色集合
     */
    List<SecurityUserRoleDo> queryUserRoleList();

    /**
     * 分页查询用户角色
     *
     * @param userRole 查询条件
     * @param startNum 开始条数
     * @param pageSize 每页长度
     * @return 用户角色集合
     */
    PageInfo<SecurityUserRoleDo> queryByPage(SecurityUserRoleDo userRole, Integer startNum, Integer pageSize);

    /**
     * 根据用户id和角色id查询用户角色信息
     *
     * @param userId
     * @param roleId
     * @return
     * @throws Exception
     */
    SecurityUserRoleDo checkSecurityUserRole(Long userId, Long roleId);

    /**
     * 根据用户id查询用户角色信息
     *
     * @param userId
     * @return
     * @throws Exception
     */
    List<SecurityUserRoleDo> queryUserRoleListByUserId(Long userId);

    /**
     * 根据用户ID删除用户角色信息
     *
     * @param userId
     */
    void deleteUserRoleByUserId(Long userId);

    /**
     * 根据用户ID和角色ID删除用户角色信息
     *
     * @param userRole
     */
    void deleteUserRoleByUserIdAndRoleId(SecurityUserRoleDo userRole);

}
